<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- CDN引⼊JQuery -->
    <script src="https://code.jquery.com/jquery-3.7.1.js"></script>
    <script>
        // new Promise((resolve, reject) => {
        //     $.ajax({
        //         type: 'GET',
        //         url: 'https://liu.zzgoodqc.cn/teas',
        //         dataType: 'json',
        //         success: (a) => {
        //             resolve(a)
        //         },
        //         error: (e) => {
        //             reject(e)
        //         }
        //     }).then((resolve) => {
        //         console.log(resolve);

        //     }).catch((reject) => {
        //         console.log(reject);

        //     })
        // })

        // new Promise((resolve, reject) => { // 先 new 一个 Promise 实例化，里面传入一个回调函数，回调函数有两个参数，resolve(返回成功结果)、reject(返回失败结果)
        //     // 要执行的代码块、XHR网络请求
        //     let xhr = new XMLHttpRequest()
        //     xhr.open('GET', 'https://liu.zzgoodqc.cn/teas')
        //     xhr.send()
        //     xhr.responseType = 'json'
        //     xhr.onload = () => {
        //         resolve(xhr.response)
        //     }
        //     xhr.onerror = (error) => {
        //         reject(error)
        //     }
        // }).then((resolve) => {
        //     console.log(resolve)
        // }).catch((reject) => {
        //     console.log(reject)
        // })

        // 函数封装 Promise 网络请求

        // ajax 网络请求
        // function ajax(type, url, data) {
        //     return new Promise((resolve, reject) => {
        //         $.ajax({
        //             type: type,
        //             url: url,
        //             data: data,
        //             dataType: 'json',
        //             success: (a) => {
        //                 resolve(a)
        //             },
        //             error: (e) => {
        //                 reject(e)
        //             }
        //         })
        //     })
        // }
        // // 获取所有茶叶列表
        // ajax('get', 'https://liu.zzgoodqc.cn/teas').then((resolve) => {
        //     console.log(resolve);

        // }).catch((reject) => {
        //     console.log(reject);

        // })
        // // 添加茶叶
        // ajax('post', 'https://liu.zzgoodqc.cn/teas',{name:'你好',type:'你好',price:18}).then((resolve) => {
        //     console.log(resolve);

        // }).catch((reject) => {
        //     console.log(reject);

        // })
        // // 获取单个茶叶
        // ajax('get', 'https://liu.zzgoodqc.cn/teas/11933').then((resolve) => {
        //     console.log(resolve);

        // }).catch((reject) => {
        //     console.log(reject);

        // })
        // // 更新已有茶叶
        // ajax('put', 'https://liu.zzgoodqc.cn/teas/11933',{name:'你好',type:'你好',price:180}).then((resolve) => {
        //     console.log(resolve);

        // }).catch((reject) => {
        //     console.log(reject);

        // })
        // // 删除茶叶
        // ajax('delete', 'https://liu.zzgoodqc.cn/teas/11933').then((resolve) => {
        //     console.log(resolve);

        // }).catch((reject) => {
        //     console.log(reject);

        // })

        // XHR 网络请求
        // function XHR(type, url, Object) {
        //     return new Promise((resolve, reject) => {
        //         let xhr = new XMLHttpRequest()
        //         xhr.open(type, url)
        //         xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8')
        //         xhr.send(JSON.stringify(Object))
        //         xhr.onload = () => {
        //             resolve(JSON.parse(xhr.response))
        //         }
        //         xhr.onerror = (e) => {
        //             reject(e)
        //         }
        //     }).then((resolve) => {
        //         console.log(resolve);
        //     }).catch((reject) => {
        //         console.log(reject);
        //     })
        // }
        // 获取所有茶叶列表
        // XHR('get', 'https://liu.zzgoodqc.cn/teas')
        // // 添加茶叶
        // XHR('post','https://liu.zzgoodqc.cn/teas',{ name: '你好', type: '你好', price: 18 })
        // // 获取单个茶叶
        // XHR('get','https://liu.zzgoodqc.cn/teas/11910')
        // // 更新已有茶叶
        // XHR('PUT', 'https://liu.zzgoodqc.cn/teas/11910', { name: '你好', type: '你好', price: 180 })
        // // 删除茶叶
        // XHR('delete','https://liu.zzgoodqc.cn/teas/12013')

        // Promise 三个静态方法；
        // function fu1() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             let a = true
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 1000);
        //     })
        // }
        // function fu2() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             let a = true
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 2000);
        //     })
        // }
        // function fu3() {
        //     return new Promise((res, rej) => {
        //         setTimeout(() => {
        //             let a = true
        //             if (a) {
        //                 res('成功')
        //             } else {
        //                 rej('失败')
        //             }
        //         }, 3000);
        //     })
        // }
        // Promise.all() 只有全部返回的是成功的结果，才会执行成功的操作，只有有一个返回的是失败的结果，就会执行失败的操作
        // Promise.all([fu1(), fu2(), fu3()])
        //     .then(a => {
        //         console.log(a)
        //     }).catch(e => {
        //         console.log(e)
        //     })
        // Promise.any() 只要有一个返回的是成功的结果，就会执行成功的操作，只有全部返回的是失败的结果，才会执行失败的操作
        // Promise.any([fu1(), fu2(), fu3()])
        //     .then(a => {
        //         console.log(a)
        //     }).catch(e => {
        //         console.log(e)
        //     })
        // Promise.race() 谁最先执行完毕，就返回谁的状态
        // Promise.race([fu1(), fu2(), fu3()])
        //     .then(a => {
        //         console.log(a)
        //     }).catch(e => {
        //         console.log(e)
        //     })

        // map集合
        // let num = new Map([['a', 1], ['b', 2]])
        // console.log(num);
        // console.log(num.set('b', 1));
        // console.log(num.size);
        // console.log(num.get('a'));
        // console.log(num.delete('b'));
        // console.log(num);
        // console.log(num.clear());
        // console.log(num);

        // set集合
        // let st = new Set([1,2,3,3,2,1])
        // console.log(st);
        // console.log([...st]);
        // console.log(st.size);
        // console.log(st.has(3));
        // console.log(st.add(4));
        // console.log(st.delete(4));
        // console.log(st);
        // console.log(st.clear());
        // console.log(st);

        // symbol
        // let sybl = Symbol()
        // let obj = {
        //     [sybl]:33,
        //     num:1
        // }
        // console.log(obj);

        // 迭代器
        // let arr = ['荒天帝','叶天帝','王林','亡灵圣法神伊莱克斯']
        // let dey = arr[Symbol.iterator]()
        // console.log(dey.next());
        // console.log(dey.next());
        // console.log(dey.next());
        // console.log(dey.next());

        // 生成器
        // function fn1() {
        //     setTimeout(() => {
        //         console.log('你好');
        //         iter.next()

        //     }, 1000);
        // }
        // function fn2() {
        //     setTimeout(() => {
        //         console.log('亡灵圣法神伊莱克斯');

        //     }, 1000);
        // }
        // function* fn() {
        //     yield fn1()
        //     yield fn2()
        // }
        // let iter = fn()
        // iter.next()
    </script>
</body>

</html>